package org.graduation.recruitment.service;

import jakarta.annotation.Nullable;
import org.graduation.recruitment.entity.dto.UserLoginDTO;
import org.graduation.recruitment.entity.dto.UserRegisterDTO;
import org.graduation.recruitment.entity.pojo.User;

/**
 * 用户服务接口，提供用户登录、注册、信息获取及密码修改等功能。
 */
public interface UserService {
    /**
     * 用户登录。
     *
     * @param user 包含登录所需信息的UserLoginDTO对象。
     * @return 登录成功返回token字符串，失败返回null。
     */
    @Nullable
    String login(UserLoginDTO user);

    /**
     * 用户注册。
     *
     * @param user 包含注册所需信息的UserRegisterDTO对象。
     * @return 注册成功返回true，失败返回false。
     */
    boolean register(UserRegisterDTO user);

    /**
     * 根据token获取用户信息。
     *
     * @param tokenStr 用户登录所获token字符串。
     * @return 返回对应token的User对象。
     */
    User getUserInfoByToken(String tokenStr);

    /**
     * 通过用户id获取用户信息。
     *
     * @param id 用户的id。
     * @return 返回对应id的User对象。
     */
    User getUserInfoById(Long id);

    /**
     * 修改用户密码。
     *
     * @param id          用户id。
     * @param oldPassword 原密码。
     * @param newPassword 新密码。
     * @return 修改成功返回true，失败返回false。
     */
    boolean updatePassword(Long id, String oldPassword, String newPassword);

    /**
     * 更新用户信息。
     *
     * @param user 包含更新后信息的User对象。
     * @return 更新成功返回true，失败返回false。
     */
    boolean updateInfo(User user);
}

